/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package videorent;

import java.util.ArrayList;

/** Representa a una operacion de tipo Compra.
 *
 * @author dayi
 */
public class Compra extends Operacion implements Cloneable {

    /** Es el Constructor de la Compra
     * @param total monto total de la Venta.
     * @param montoEntregado monto entregado por una persona.
     * @param articulos monto entregado por una persona.
     */
    public Compra(double total, double montoEntregado, ArrayList<Object> articulos) {
        super(total, montoEntregado, articulos);
    }

    public Compra(ArrayList<Object> articulos) {
        super(articulos);
    }

    public Compra() {
        super();
    }

    /** Este metodo clona una instancia de Compra.
     * @return Un clon de la Compra.
     */
    public Compra clone() {
        Compra obj = null;
        try {
            obj = (Compra) super.clone();
        } catch (CloneNotSupportedException ex) {
            System.out.println(" No se puede duplicar " + ex);
        }
        return obj;
    }

    /**
     * Este metodo calcula el precio de la lista de articulos a comprar.
     * @return el total a pagar por los articulos a comprar.
     */
    @Override
    public double obtenerSubtotal() {
        double subtotal = 0;
        int i = 0;

        ArrayList<Object> articulos = this.getArticulos();

        while (i < articulos.size()) {
            Object ob = articulos.get(i);

            if (ob instanceof Pelicula) {
                subtotal = subtotal + PRECIO_PELICULA;
            } else if (ob instanceof TemporadaSerie) {
                subtotal = subtotal + PRECIO_SERIE;
            } else if (ob instanceof JuegoEducativo) {
                subtotal = subtotal + PRECIO_JUEGO_EDUCATIVO;
            } else if (ob instanceof JuegoRecreativo) {
                subtotal = subtotal + PRECIO_JUEGO_RECREATIVO;
            }

            i++;
        }
        return subtotal;
    }
}
